package com.bsh.service;

import java.math.BigDecimal;
import java.util.List;
import com.bsh.mybatis.model.User;

/**
 * 推荐返币 ,升级返现
 * 合伙人返币
 * @author jane
 *
 */
public interface RecommendService {

	
	/**
	 * 余额转账 ,用余额转给会员或商家  -返币
	 * @param userId
	 * @param toUserId
	 * @param total
	 * @param sn
	 * @return
	 */
	Integer transferByCash(Integer userId, Integer toUserId, BigDecimal total,String sn);
	
	/**
	 * 在线支付转账 ,用余额转给会员或商家 -返币
	 * @param userId
	 * @param toUserId
	 * @param total
	 * @param sn
	 * @return
	 */
	Integer transferByOnline(Integer userId, Integer toUserId, BigDecimal total,String sn);
	
	/**
	 * 用余额(会员升级)vip[100],gold[1000]，给上家返现金 fee比例服务内写固定
	 * @param level
	 * @param userId
	 * @param money
	 * @param sn
	 * @return
	 */
	Integer memberUpgradeByCash(String level,Integer userId, BigDecimal money,String sn);
	
	/**
	 * 在线支付(会员升级)vip[100],gold[1000]，给上家返现金 fee比例服务内写固定
	 * @param level
	 * @param userId
	 * @param money
	 * @param sn
	 * @return
	 */
	Integer memberUpgradeByOnline(String level,Integer userId, BigDecimal money,String sn);
	
	/**
	 * 管理后台加商币 给推荐人返币
	 * @param total   总金额，消费总额
	 * @param type    交易类型 后台选择
	 * @param uInfo	  后台操作的用户对象
	 * @param sn
	 * @param actionType	后台操作时选择的值 可是消费，收款 或其他 方便于后期扩展
	 * @return
	 */
	Integer adminAddCloudMoney( BigDecimal total,String type, User uInfo, String sn, String actionType);
	
	/**
	 * 管理后台加商币 给商家就是给合伙人返币
	 * @param total
	 * @param toUInfo    后台操作的用户对象
	 * @param sn
	 * @param actionType	后台操作时选择的值 可是消费，收款 或其他 方便于后期扩展
	 * @return
	 */
	Integer adminAddCloudMoneyPartner(BigDecimal total,User toUInfo, String sn, String actionType);
	
	/**
	 * 购买商币
	 * @param totalCloudmoney 就是消费总额
	 * @param fee
	 * @param userid
	 * @param sn
	 * @param tradeType tradeType
	 * @return
	 */
	Integer buyCloudMoney(BigDecimal totalCloudmoney,BigDecimal fee,Integer userid, String sn ,Integer tradeType );
	
	/**
	 * 查用户所有上线 遍历所有
	 * 20160808 郑总要改新的游戏规则 改二级分销并要一直向上推直到找到同级或以上  -jane
	 * 
	 * @param levelNum   等级数，即查找到几级为止。 2就是总要找到二级为止要不然一直往上找
	 */
	List<Integer> getAllPuser(Integer userid , Integer levelNum);
}